package com.reformer.commons.constant;

/**
 * 付款类型 1：支付宝手机扫码支付 2：支付宝APP支付 3：支付宝当面付 4：支付宝服务窗 5：手机网站支付 6：微信扫码支付 7：微信APP支付
 * 8：微信刷卡支付 9：微信公众号支付 10：微信H5支付 15：市民卡支付
 */
public enum ThirdPayType {

    /**
     * 支付宝扫码支付
     */
    ALI_QRCODE(1, "QRCODE", "支付宝当面付-扫码支付"),
    /**
     * 支付宝APP支付
     */
    ALI_APP(2, "ALIAPP", "支付宝APP支付"),
    /**
     * 当面付
     */
    ALI_F2F(3, "F2F", "支付宝扫码支付-条码支付"),
    /**
     * 支付宝服务窗
     */
    ALI_SERVICEWINDOW(4, "SERVICEWINDOW", "支付宝服 务窗"),
    /**
     * 支付宝手机网站支付
     */
    ALI_WAP(5, "WAP", "支付宝手机网站支付"),
    /**
     * 微信原生扫码支付
     */
    WX_NATIVE(6, "NATIVE", "微信原生扫码支付"),
    /**
     * 微信app支付
     */
    WX_APP(7, "APP", "微信app支付"),
    /**
     * 微信-刷卡支付
     */
    WX_MICROPAY(8, "MICROPAY", "微信-刷卡支付"),
    /**
     * 微信公众号支付
     */
    WX_JSAPI(9, "JSAPI", "微信公众号支付"),
    /**
     * 微信H5支付
     */
    WX_MWEB(10, "MWEB", "微信H5支付"),
    /**
     * 市民卡支付
     */
    CITIZEN_CARD(15, "SMK", "市民卡"),
    /**
     * 农商行
     */
    RURAL_CREDIT_E(16, "rural_e", "农商行-丰收e");

    private Integer payCode;
    private String enDesc;
    private String payDesc;

    ThirdPayType(Integer payCode, String enDesc, String payDesc) {
        this.payCode = payCode;
        this.enDesc = enDesc;
        this.payDesc = payDesc;
    }

    /**
     * 获取对应的ThirdPayType
     *
     * @param payType
     * @return
     */
    public static ThirdPayType getThirdPayType(String payType) {
        for (ThirdPayType thirdPayType : ThirdPayType.values()) {
            if (thirdPayType.getEnDesc().equals(payType)) {
                return thirdPayType;
            }
        }
        return null;
    }

    /**
     * 根据payCode查询对应的ThirdPayType
     *
     * @param payCode
     * @return
     */
    public static ThirdPayType getThirdPayType(Integer payCode) {
        for (ThirdPayType thirdPayType : ThirdPayType.values()) {
            if (thirdPayType.getPayCode().equals(payCode)) {
                return thirdPayType;
            }
        }
        return null;
    }

    /**
     * 是否为微信支付
     *
     * @param payCode
     * @return
     */
    public static boolean isWXPay(Integer payCode) {
        if (payCode >= 6 && payCode <= 10) {
            return true;
        }
        return false;
    }

    /**
     * 是否为微信支付
     *
     * @param paytype
     * @return
     */
    public static boolean isWXPay(ThirdPayType paytype) {
        return paytype != null && isWXPay(paytype.getPayCode());
    }

    /**
     * 是否为支付宝支付
     *
     * @param payCode
     * @return
     */
    public static boolean isAlipay(Integer payCode) {
        if (payCode >= 1 && payCode <= 5) {
            return true;
        }
        return false;
    }

    /**
     * 是否为支付宝支付
     *
     * @param paytype
     * @return
     */
    public static boolean isAlipay(ThirdPayType paytype) {
        return paytype != null && isAlipay(paytype.getPayCode());
    }

    public String getEnDesc() {
        return enDesc;
    }

    public Integer getPayCode() {
        return payCode;
    }

    public String getPayDesc() {
        return payDesc;
    }
}
